The present invention relates generally to a computer implemented method for configuring and coordinating components of virtualized data processing systems. More specifically, the present invention relates to virtual memory sharing.
Data processing systems are continuously improved such that memory, storage, and processing generally become cheaper year-to-year. Conversely, a more powerful set of hardware features can be built today as a data processing system for the same price of a data processing system having half as many physical resources during a prior year. This rate of advancement is frequently referred to as Moore's law.
Accordingly, conventional operating systems and their client applications can occupy a fraction of a data processing system's resources, and still function in an efficient manner. Data center operators have taken advantage of the availability of surplus physical resources by installing multiple operating systems each within their own logical partitions of the data processing system. A logical partition is an operating system image executing instructions on a data processing system in a manner that permits allocation of excess operating system resources to a parallel or peer operating system image. Operating systems that may be configured to operate in a logical partition include, for example, IBM i®, z/OS®, AIX®, Linux®, among others. IBM i®, z/OS®, and AIX® are registered trademarks of International Business Machines Corporation. Linux® is a registered trademark of Linus Torvalds.
One approach to organizing logical partitions is to allocate a fixed amount of memory and disk space to each logical partition. However, due to varying processing loads in each logical partition, data center operators have found that much system capacity is under-utilized by each logical partition during various periods of the day. Accordingly, efforts have been made to dynamically allocate resources to each logical partition in response to the processing loads of each logical partition in relation to peer logical partitions hosted on the same data processing system.
A typical solution to efficiently use the resources is to virtualize memory functions. One way to provide virtualized memory functions is by paging memory or swapping memory between random access memory and its slower counterpart, disk storage. A page can be paged-in to memory from storage, or paged out from memory to storage. A “page” is a contiguous block of memory of a certain size where a system manages units or blocks of memory the size of a page. Pages can have a uniform size or segment, for example, 4096 bytes. A page is generally the smallest segment or unit of translation available to an OS. Accordingly, a page can be the standardized segment of data that can be moved and processed by the data processing system.
A paging device is a physical or logical device used for paging memory into physical memory. A paging device can be a local disk, network addressed storage, flash memory, and the like. A paging device can be responsive to requests made from software components of a data processing system, such as, a Virtual I/O Server (VIOS). A Virtual I/O Server can provide virtual SCSI target and Shared Ethernet Adapter capability to client logical partitions within the system.
Thus, in systems that rely on virtual memory, the memory function emulates real memory with virtual memory pages. Such virtual memory pages can reside in either physical memory or in storage. Accordingly, due to the availability of storage used to support and emulate memory, the virtual memory may exceed a data processing system's physical memory.
The allocation of virtual memory to each client partition can be challenging. Moreover, issues concerning priority access to virtual memory backed to physical memory can also determine a speed with which a client partition can operate. In addition, due to the mechanical wear issues associated with disk storage, the provision of redundancy is a focus where a client partition requires robust and reliable access to data.